class A:

    def test(self):
        print("A")


class B():

    def test(self):
        print("B")  #


class C(B, A):

    def test(self):
        # 调用父类的方法, 注意: 这里的super()是根据MRO来查找的, 不是根据继承顺序来查找的, 
        # 所以这里的super()是B的父类方法, 而不是A的父类方法
        super().test()


c = C()
c.test()  # C
# 查看类的继承顺序 (<class '__main__.C'>, <class '__main__.B'>, <class '__main__.A'>, <class 'object'>)
# print(C.__mro__)

# 多态
# 多态的定义：多态是指同一个方法调用由于对象不同可能会产生不同的行为。
# 多态的作用：多态可以让我们在不知道对象类型的情况下使用对象，从而提高程序的灵活性。
# 注意点：多态是面向对象编程的一个重要特性，它可以让我们在不知道对象类型的情况下使用对象，从而提高程序的灵活性。    
# 多态的形成条件：
# 1. 继承
# 2. 重写
